/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dpy.appmvdpy.Models;

import java.io.Serializable;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import org.codehaus.jackson.annotate.JsonBackReference;
import org.codehaus.jackson.annotate.JsonIgnore;

/**
 *
 * @author ac_psoares
 */
@Entity
@Table(name = "produtos_pedidos")
@XmlRootElement
/**@NamedQueries({
    @NamedQuery(name = "ProdutosPedidos.findAll", query = "SELECT p FROM ProdutosPedidos p"),
    @NamedQuery(name = "ProdutosPedidos.findByPreco", query = "SELECT p FROM ProdutosPedidos p WHERE p.preco = :preco"),
    @NamedQuery(name = "ProdutosPedidos.findByItemn", query = "SELECT p FROM ProdutosPedidos p WHERE p.itemn = :itemn"),
    @NamedQuery(name = "ProdutosPedidos.findById", query = "SELECT p FROM ProdutosPedidos p WHERE p.id = :id"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade4", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade4 = :quantidade4"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade8", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade8 = :quantidade8"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade10", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade10 = :quantidade10"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade12", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade12 = :quantidade12"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade14", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade14 = :quantidade14"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade16", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade16 = :quantidade16"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade18", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade18 = :quantidade18"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidadeP", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidadeP = :quantidadeP"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidadeM", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidadeM = :quantidadeM"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidadeG", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidadeG = :quantidadeG"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidadeEG", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidadeEG = :quantidadeEG"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidadeGG", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidadeGG = :quantidadeGG"),
    @NamedQuery(name = "ProdutosPedidos.findByQuantidade2", query = "SELECT p FROM ProdutosPedidos p WHERE p.quantidade2 = :quantidade2")})
*/
public class ProdutosPedidos extends DefaultModel implements Serializable {
    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "preco")
    private Double preco;
    @Column(name = "precoTotal")
    private Double precoTotal;
    @Column(name = "itemn")
    private Integer itemn;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @NotNull
    @Column(name = "id")
    private Integer id;
    @Column(name = "quantidade4")
    private Double quantidade4;
    @Column(name = "quantidade8")
    private Double quantidade8;
    @Column(name = "quantidade10")
    private Double quantidade10;
    @Column(name = "quantidade12")
    private Double quantidade12;
    @Column(name = "quantidade14")
    private Double quantidade14;
    @Column(name = "quantidade16")
    private Double quantidade16;
    @Column(name = "quantidade18")
    private Double quantidade18;
    @Column(name = "quantidadeP")
    private Double quantidadeP;
    @Column(name = "quantidadeM")
    private Double quantidadeM;
    @Column(name = "quantidadeG")
    private Double quantidadeG;
    @Column(name = "quantidadeEG")
    private Double quantidadeEG;
    @Column(name = "quantidadeGG")
    private Double quantidadeGG;
    @Column(name = "quantidade2")
    private Double quantidade2;
    @Column(name = "quantidadeXG")
    private Double quantidadeXG;
    @Column(name = "observacao")
    private String observacao;
    @JsonBackReference("produtos-pedidos")
    @JoinColumn(name = "idPedidos", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Pedidos idPedidos;
    @JsonBackReference("pedidos-items")
    @JoinColumn(name = "idPRODUTOS", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Produtos idPRODUTOS;

    public ProdutosPedidos() {
    }

    public ProdutosPedidos(Integer id) {
        this.id = id;
    }

    public Double getPreco() {
        return preco;
    }

    public void setPreco(Double preco) {
        this.preco = preco;
    }
    
     public Double getPrecoTotal() {
        return precoTotal;
    }

    public void setPrecoTotal(Double precoTotal) {
        this.precoTotal = precoTotal;
    }

    public Integer getItemn() {
        return itemn;
    }

    public void setItemn(Integer itemn) {
        this.itemn = itemn;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Double getQuantidade4() {
        return quantidade4;
    }

    public void setQuantidade4(Double quantidade4) {
        this.quantidade4 = quantidade4;
    }

    public Double getQuantidade8() {
        return quantidade8;
    }

    public void setQuantidade8(Double quantidade8) {
        this.quantidade8 = quantidade8;
    }

    public Double getQuantidade10() {
        return quantidade10;
    }

    public void setQuantidade10(Double quantidade10) {
        this.quantidade10 = quantidade10;
    }

    public Double getQuantidade12() {
        return quantidade12;
    }

    public void setQuantidade12(Double quantidade12) {
        this.quantidade12 = quantidade12;
    }

    public Double getQuantidade14() {
        return quantidade14;
    }

    public void setQuantidade14(Double quantidade14) {
        this.quantidade14 = quantidade14;
    }

    public Double getQuantidade16() {
        return quantidade16;
    }

    public void setQuantidade16(Double quantidade16) {
        this.quantidade16 = quantidade16;
    }

    public Double getQuantidade18() {
        return quantidade18;
    }

    public void setQuantidade18(Double quantidade18) {
        this.quantidade18 = quantidade18;
    }

    public Double getQuantidadeP() {
        return quantidadeP;
    }

    public void setQuantidadeP(Double quantidadeP) {
        this.quantidadeP = quantidadeP;
    }

    public Double getQuantidadeM() {
        return quantidadeM;
    }

    public void setQuantidadeM(Double quantidadeM) {
        this.quantidadeM = quantidadeM;
    }

    public Double getQuantidadeG() {
        return quantidadeG;
    }

    public void setQuantidadeG(Double quantidadeG) {
        this.quantidadeG = quantidadeG;
    }

    public Double getQuantidadeEG() {
        return quantidadeEG;
    }

    public void setQuantidadeEG(Double quantidadeEG) {
        this.quantidadeEG = quantidadeEG;
    }

    public Double getQuantidadeGG() {
        return quantidadeGG;
    }

    public void setQuantidadeGG(Double quantidadeGG) {
        this.quantidadeGG = quantidadeGG;
    }

    public Double getQuantidade2() {
        return quantidade2;
    }

    public void setQuantidade2(Double quantidade2) {
        this.quantidade2 = quantidade2;
    }
    
     public Double getQuantidadeXG() {
        return quantidadeXG;
    }

    public void setQuantidadeXG(Double quantidadeXG) {
        this.quantidadeXG = quantidadeXG;
    }

    @JsonIgnore
    public Pedidos getIdPedidos() {
        return idPedidos;
    }

    @JsonIgnore
    public void setIdPedidos(Pedidos idPedidos) {
        this.idPedidos = idPedidos;
    }

    @JsonIgnore
    public Produtos getIdPRODUTOS() {
        return idPRODUTOS;
    }

    @JsonIgnore
    public void setIdPRODUTOS(Produtos idPRODUTOS) {
        this.idPRODUTOS = idPRODUTOS;
    }
    
      public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ProdutosPedidos)) {
            return false;
        }
        ProdutosPedidos other = (ProdutosPedidos) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }
    
  
    @Override
    public String toString() {
        return "com.dpy.appmvdpy.Models.ProdutosPedidos[ id=" + id + " ]";
    }
    
    public Double getSomaQuantidade()
    {
       return getQuantidade2() + getQuantidade4() + getQuantidade8() + getQuantidade10()
             + getQuantidade12() + getQuantidade14() + getQuantidade16() + getQuantidade18()
             + getQuantidadeP() + getQuantidadeM() + getQuantidadeG() + getQuantidadeGG() 
             + getQuantidadeXG();    
    }           
   
}
